Einführung in R

Jannis Bosch

Welche Programme benötigen wir?

R

  • R ist eine Programmiersprache, die vor allem im Bereich der Statistik verwendet wird

  • die Kernprogrammiersprache (core R) wird durch verschiedenste Bibliotheken, Erweiterungen und Weiterentwicklungen verfeinert

  • R ist open source und freie Software

RStudio

  • RStudio ist eine Entwicklungsumgebung für R

  • RStudio stellt die Nutzer:innenoberfläche und beinhaltet Tools wie einen Viewer, Code-highlighting und vieles mehr

RStudio

Übersicht

R Workflow

R Projekte

  • Wenn ihr ein neues Projekt in R angeht, erstellt ein R-Projekt in einem neuen Ordner (File -> New Project)

  • Damit habt ihr den Arbeitspfad als Ausgangspunkt festgelegt und könnt alle Pfadangaben relativ zum Ausgangspunkt festlegen

  • Ihr habt außerdem die Möglichkeit eure Arbeitsumgebung für die nächste Session zu speichern

R Skripte

  • Erstellt jetzt in eurem Projektordner ein R-Skript und öffnet es

  • R-Skripte sind letztendlich einfach Textdateien, die euren Code enthalten

  • Ihr könnt entweder den kompletten Code zusammen ausführen oder einzelne Zeilen/Abschnitte

Die R Konsole

  • In der Konsole könnt ihr Code ausführen, den ihr nicht für später speichern möchtet

  • Die Ausgabe wird dann ebenfalls in der Konsole angezeigt

  • Wenn ihr den Code eines Skripts ausführt, dann findet ihr die Ausgaben ebenfalls in der Konsole

Die aRbeitsumgebung

  • Wenn ihr Daten in Variablen speichert, könnt ihr diese danach in der Arbeitsumgebung sehen

  • Aktuell sollte eure Arbeitsumgebung noch leer sein

R-Code

R-Code kommentieren

# Mit dem Raute-Zeichen (#) werden Kommentarzeilen markiert
# Der Text in Kommentarzeilen dient nur als 
# Anmerkung und wird von R nicht ausgefuehrt

# Es ist meist hilfreich seinen eigenen Code zu kommentieren, 
# damit man ihn auch später noch versteht

Einfache Berechnungen

  • Die Zeilen in der Box sind der Code, dazwischen findet ihr die jeweilige Ausgabe
# Die Grundrechenarten in R: 
# Addition + 
# Subtraktion - 
# Multiplikation * 
# Division /

(3*3-6)/3+10441 
[1] 10442
3*3-6/3+10441
[1] 10448
# R berechnet Punkt- vor Strichrechnung
  • Rechts oben in jeder Box findet ihr einen Button, der den Code kopiert

Ein kurzer Hinweis für dieses Tutorial

  • Übertragt die Inhalte jeder Box dieses Tutorials in euer geöffnetes Skript

  • Führt den Inhalt jedes Skripts einzeln aus (Strg + Enter bzw. Strg + R) und versucht dabei jeweils darauf zu achten wie sich die Variablen in der Arbeitsumgebung verändern

  • Dabei wird jeweils die komplette Zeile, in der sich der Cursor befindet, ausgeführt (oder der markierte Text)

  • Falls ihr eine Fehlermeldung ausgespuckt bekommt, sagt einfach bescheid!

Variablen deklarieren

  • Um die Arbeitsumgebung zu füllen, deklarieren wir jetzt ein paar Variablen
# Um das Ergebnis einer Berechnung zu speichern, kann es in einer Variable festgehalten werden
# Es gibt zwei Wege einer Variable einen Wert zuzuweisen:
Nummer <- 3
Nummer = 3
# = und <- haben die gleiche Funktion


# Um das Ergebnis spaeter aufzurufen, muss lediglich der Variablenname ausgefuehrt werden
# In der Konsole wird dann der Befehl erneut angezeigt, gefolgt vom Wert der Variable
Nummer
[1] 3

Variablen deklarieren

  • Groß- und Kleinschreibung unbedingt beachten!
Nummer <- 3
NuMmEr <- 4

Nummer
[1] 3
NuMmEr
[1] 4

Variablenklassen

  • Daten und Variablen können unterschiedliche Klassen haben
Number <- 3

Character <- "Hallo"

Logical <- TRUE
Logical <- T
# Dies sind fuers Erste die wichtigsten Variablenklassen

# Wenn ich den selben Variablennamen zweimal verwende, 
# wird der erste Wert ueberschrieben
Logical <- FALSE

Logical
[1] FALSE

R-Funktionen

R-Funktionen

  • R-Funktionen werden durch runde Klammern gekennzeichnet

  • Funktionen können unterschiedlich viele Eingabe- und Ausgabeargumente haben

  • Die Funktion mean() berechnet z.B. den Mittelwert aus einer Reihe numerischer Daten

  • Mit einem ? vor dem Funktionsnamen könnt ihr mehr über die jeweilige Funktion erfahren

?mean

Werte zu Vektoren kombinieren

# Variablen koennen auch mehr als einen Wert beinhalten 
# (Datenreihen / Arrays / Vektoren und Matrizen)
# Mithilfe der combine Funktion c() können mehrere Werte zu einem Vektor verbunden werden

MyVector <- c(1,2,3)
MyVector
[1] 1 2 3
# Mit der mean() Funktion kann man dann z.B. den Mittelwert berechnen
mean(MyVector)
[1] 2

Mehrere Eingabeargumente

mean(MyVector)
[1] 2
# In diesem Fall ist das Eingabeargument eine Datenreihe (1,2,3) 
# und das Ausgabeargument der zugehörige Mittelwert

MyNewVector <- c(1,2,3,NA)
# Bei NA-Werten funktioniert die mean-Funktion nicht
mean(MyNewVector)
[1] NA
# Ein zweites Eingabeargument schafft Abhilfe
mean(x = MyNewVector, na.rm = T)
[1] 2

Ergebnisse speichern

# Auch die Ergebnisse von Funktionen koennen in einer Variable gespeichert werden
MeanMyVector <- mean(MyVector)

# Ergebnis aufrufen
MeanMyVector
[1] 2

Matrizen erstellen

MyVector
[1] 1 2 3
# Zeilen (rows) verbinden
MyMatrix <- rbind(MyVector, MyVector, MyVector)
MyMatrix
         [,1] [,2] [,3]
MyVector    1    2    3
MyVector    1    2    3
MyVector    1    2    3
# Spalten (columns) verbinden
MyMatrix <- cbind(c(1,0,0), c(0,1,0), c(0,1,0))
MyMatrix
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    1
[3,]    0    0    0
# Wenn ihr MyMatrix in der Arbeitsumgebung anklickt,
# zeigt R euch auch eure Datenmatrix

Variablenklassen I

# Die Klasse einer Variable herausfinden:
# Die class() Funktion 
Number <- 3
class(Number)
[1] "numeric"
# Auch das Ergebnis dieser Funktion kann ich in einer neuen Variable speichern
ClassOfNumber <- class(Number)

# Und was hat das Ergebnis für eine Klasse? 
class(ClassOfNumber)
[1] "character"
# Auch dieses Ergebnis könnte ihr wieder in einer Variable speichern
ClassOfClassOfNumber <- class(ClassOfNumber)
ClassOfClassOfNumber
[1] "character"

Weitere Funktionen

mean(MyVector)
[1] 2
min(MyVector)
[1] 1
max(MyVector)
[1] 3
sd(MyVector)
[1] 1
summary(MyVector)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    1.0     1.5     2.0     2.0     2.5     3.0 
length(MyVector)
[1] 3
# Schaut mal in die Hilfeseiten für diese Funktionen hinein (?Funktionsname)

Rechnen mit R

Rechnen und speichern

# Ich kann auch etwas auf einen Variablenwert aufaddieren und dies in der selben Variable speichern
# (der alte Wert ist dann aber geloescht)
Number
[1] 3
Number <- Number + 8
Number
[1] 11

Rechnen mit character-Variablen

# Anführungszeichen markieren für R eine character-Variable
Number <- "3"

# Das geht nicht
Number <- Number + 8
Error in Number + 8: nicht-numerisches Argument für binären Operator
class(Number)
[1] "character"
# Die Funktion as.numeric() wandelt eine andere Variablenklasse in einen numerischen Wert um
Number <- as.numeric(Number)
class(Number)
[1] "numeric"
# Jetzt geht es wieder
Number <- Number + 8
Number
[1] 11
# Es muss aber eine moegliche Umformung sein
as.numeric("a")
[1] NA

Rechnen mit Matrizen

# Matrizenrechnung ist auch moeglich
MyMatrix
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    1
[3,]    0    0    0
MyMatrix - 1 
     [,1] [,2] [,3]
[1,]    0   -1   -1
[2,]   -1    0    0
[3,]   -1   -1   -1
# Ich kann alle Berechnungen in einer neuen Variable speichern
MyNewMatrix <- MyMatrix + 3
class(MyNewMatrix)
[1] "matrix" "array" 
# Wenn man mit (Forschungs-)Datensaetzen arbeitet, bietet es sich meistens an diese als dataframe 
# zu speichern, da bei der Matrix-Klasse alle Werte die gleiche Datenklasse haben muessen
MyNewMatrix <- data.frame(MyNewMatrix)
class(MyNewMatrix)
[1] "data.frame"

  • Fuer Interessierte: Mehr Informationen zu Datentypen gibt es hier (Kapitel 3.6 fuer dataframes): [Link]https://adv-r.hadley.nz/vectors-chap.html